package com.itheima.dubbo.api;


import com.itheima.model.domain.Activity;
import com.itheima.model.domain.DashUser;
import com.itheima.model.domain.DashUserForSql;
import com.itheima.model.domain.Summary;

import java.util.List;
import java.util.Map;

public interface ActivityApi {
    void save(Activity activity);
    void update(Activity activity);

//    查询用户最新一次的记录
    Activity queryBestNewDate(Long id);

//查询用户当天是否进行过活动---任意活动
    List<Activity> queryAcivity(Long id, String nowDate);
//查询今天的某项活动记录总数---任意活动的总数
Summary queryActivityCounts(String nowDate, String activityType);
    //查询今日的任意活动的记录--所有人的记录
    List<Activity> queryActivity(String nowDate, String activityType);
    //查询某个人今日的任意活动的记录--单个记录
    Activity  queryActivity(Long userId, String nowDate, String activityType);
//        查询今天的所有活动记录中包含的用户总数
Summary queryActiveUserCounts(String nowDate);
    //每天的最后一个更新的记录
    List<Activity> queryActivityByDesc(String nowDate);

    // 查找每月的新增用户---按时间查找->用户活动类型为注册的活动记录个数
    List<DashUserForSql> queryByDateRange(Integer year, String activityType);
    // 查找每月的活跃用户---按时间查找->只要用户有记录即可--任意活动
    List<DashUserForSql> queryByLastDateRange(Integer lastYear);
    //每月的次日留存率
    DashUser queryActiveForMonth(Integer year, Integer month);
//查询指定创建时间的用户的年龄分布
    List<DashUser> queryAgeRangeByDate(String startDate, String endDate);
    //查询指定创建时间的用户的行业分布前十名
    List<DashUser> queryWorkRangeByDate(String startDate, String endDate);
    //查询指定创建时间的用户的性别分布
    List<DashUser> querySexRangeByDate(String startDate, String endDate);
    //查询指定创建时间的用户的地区分布
    List<DashUser> queryLocalRangeByDate(String startDate, String endDate);
}
